Introduction

COVID-19 in the United States

Our group was interested in exploring the repercussions of the COVID-19 pandemic on young people, and especially students. In initial research, we found that within the United States, the rise of remote learning has called for additional attention on students’ mental health as they experience a lack of social interaction, less direct support from teachers, and difficulty focusing at home. Aside from academics, the mental well-being of all youth in general has also been negatively affected as children and their families are asked to self-quarantine and in some cases, leave their jobs. Health experts are now concerned about the mental health conditions for our youth in the long run. They believe that experiencing and living in these tough situations for an extended amount of time can cause children to have anxiety and depression which is why we need to start paying close attention to negative impacts of COVID-19 on mental health. For more information regarding this issue, you may read the article provided in this link.

Data Collection

We intended to look for data that investigated the effects of COVID-19 in the United States, but had difficulty finding a data set that had an adequate amount or type of data for our project. We then broadened the scope of our search and were interested to look outside of the United States. As Americans, we have seen and experienced the pandemic’s implications on mental health within the United States, but it leaves us quite curious about the present circumstances elsewhere. While searching for new research and data sets, we stumbled upon a relatively recent research done in Delhi, the capital territory of India called “COVID-19 and its impact on education, social life and mental health of students: A Survey”.

Implications in India

Data was collected from subjects living in the National Capital Region (NCR) which encompasses both Delhi and its surrounding area, as well as outside of this region. In this study, researchers looked at different age-groups of a total of 1,182 subjects, ages ranging from 7 to 59 years old, and how several aspects of their lives were affected after the lockdown. Additionally, they recorded the different coping mechanisms adopted due to such sudden changes. The various variables such as learning hours for online classes and self-study, duration of sleep, time spent on fitness and sleep were recorded and analyzed as factors related to mental health. Although the effect on students’ education, social life, physical health, and mental well-being was expected, this research suggests that the public should take necessary measures to prevent psychological problems and improve students’ experiences in and outside of academics, for our current results are not meeting the expectations of the initial government policies. For specific details on the demographics, objectives, and methods of this study, please read the research paper linked here.

Although the researchers in this study did a phenomenal job at creating, designing, and interpreting their own plots, we decided to ask different questions and explore our own interests by using the same data set while still acknowledging their remarkable findings. Overall, we wondered how has COVID-19 affected mental health among students? How do factors like social connection, sleep and social media use affect student life and class activities?

Demographics

Age Breakdown

Before exploring the data set, it’s important to first acknowledge that there is indeed a demographic imbalance. Of the 1,182 respondents, the research paper states that 84.3% of those subjects were 7 to 22 years of age with the mean age being 20.16 years old. This bar plot visually demonstrates that most of the data comes from college-aged respondents. As, the aim of this study was to research COVID-19 implications on the education, social life, and mental health of students, it makes sense that there are so many respondents in this age range.

Because of the demographic imbalance, we split the respondents into age groups. The groupings were based partly on what we considered to be a tradition age for education levels and partly based on life stages. For respondents in the 7 to 23 age range, we can guess what level of schooling they are in based solely on age. However, for older respondents, this is not so simple. Thus, we broke up the older respondents into what we thought of as different life stages. These topics are big ideas to explore, and to get a more accurate picture of education and mental health we wanted to break the age down into groups by age level.

Respondents by Age Group
Age Respondents Proportion
7-13 92 7.783%
14-18 276 23.350%
19-23 674 57.022%
24-33 91 7.699%
34-45 45 3.807%
46-59 4 0.338%
total 1,182


Region

Just as we observed with the previous plot, the number of respondents per region of residence also differs. This plot displays that there is indeed quite a significant difference between Delhi-NCR respondents and respondents living outside of the Delhi-NCR. Although the online-survey was originally aimed at institutions within the Delhi-NCR region, a significant number of responses from outside of Delhi-NCR was received, for distance-learning regulations forced many students to move out of homes and institutions to reside elsewhere. Of the total number of respondents, 38.3% were living outside of the Delhi-NCR.


Class Time

This plot compares the median number of hours spent in class by different age groups. For the sole purpose of this study, it is important to draw attention to how many hours students are spending sitting in front of a screen each day. From this plot, we can observe that respondents within the 7-13 and 14-18 age-groups spend the most time in class per day. The researchers emphasized that different variables (time spent on online class, self-study,fitness, sleep, and social media) changes with different age distributions. Average time spent in class and age-group was one of the relationships that were inversely proportional; As age-group value increases, the average number of hours spent online starts to decrease.

 

Social Media Use, Sleep and Mental Health Outcomes

In a recent study examining the relationship between sleep and mental health and sleep in college students, researchers found that different mental health symptoms had different patterns of association with poor sleep. They found an association between anxiety and depression symptoms and sleep, but found that mental health conditions only affected certain effects of poor sleep. This study also emphasizes that the effects of poor mental health could be exacerbated by inadequate sleeping hours or poor sleep. Previous research has shown that improving sleep for students may also improve mood. (Becker et al., 2018).

A correlational study from 2018 examined the association of outcomes of social media use in young adults such as general mental health symptoms, loneliness, suicidal thoughts, and a change in empathy, and found that concerns regarding social media use in young adults may be misplaced. Though organizations such as the Royal Society for public health have reported evidence for links between social media use and poor mental health, this particular study did not find proof of an association. This study pointed out the difference between use of social media on mental health effects. If social media was used for negative social comparison this could lead to depression, but that authentic self-presentation could be associated with positive mental health effects. The 2018 study also stated that time spent with social media or exposure alone is not a good indicator of mental health, but instead that how the time was spent is better for analysis and identifying problems (Berryman, Ferguson, and Negy, 2018).

In the graph below we seek to examine the relationship with between time spent on social media per week and time spent sleeping per week as indicators for mental health. Due to the fact that sleep disturbance can often be an indicator or association with poor mental health outcomes, we chose to examine how these two variables interacted, and to see if this differed by age.

 

 

For most of the age categories there may be a slight negative association between hours of sleep and hours of social media use. It appears that while hours of sleep go up, hours of social media use may slightly go down. For the age category 19 years - 23 years, there appears to be no association at all between amount of sleep and amount of social media use. In addition, the association is not clear for any age group, leading us to believe that the results from the COVID-19 dataset that we are using most likely follow the trnd that the 2018 study by Berryman, Ferguson, and Negy suggested, which is that there is limited proof between social media and mental health effects. It is also worth noting that difference in amount of time sleeping is not the best indicator of mental health outcomes, and another measurement like an increase anxiety or depression symptoms may be a better indicator that was not included in the data set that we used.

 

With the pandemic, students are forced to quarantine at home which results in less face-to-face interactions and more time on social media (if it’s accessible to them). In the graph below, we used the data set to see if there is a strong relationship between the average time spent on social media per day and whether or not they feel connected to their loved ones. Interestingly, the plot shows that between the different age groups, the results vary, and the average time spent on social media does not exactly determine whether or not there is a connection with loved ones. This can demonstrate that the connections made with loved ones do not merely come from social media interactions, nor are they a result of having to stay home with loved ones everyday. Indeed, that connection can be a result of anything depending on the individual.

Outcomes and Effects of COVID-19

 

What Respondents Miss Most
School/college 368
Friends , relatives 213
Travelling 169
Roaming around freely 143
Other 137
Eating outside 99

 

We were interested to examine what the survey respondents missed the most during the COVID-19 pandemic, and found that throughout the many survey responses, eating outside, friends and relatives, roaming around freely, school/college, and traveling were the most common responses to the question “What do you miss the most?”. We observed that most the most common responses were also what we, as college students, missed in the United States. It was interesting that school and/or college was the most common answer, but this answer makes sense when considering the demographics of the responses and the most common ages for response, which was school and college aged people.

 

 

It doesn’t appear that region impacted what respondents missed. We did anticipate this because, as mentioned, many of the things people missed in this survey were things that we missed. However, because our demographic is inbalanced, we were curious to look more closely at the age groupings we made and see how students responded to this question compared to other in their same age range.

 

Conclusion

Major Findings

  • The relationship between social media use and sleep varies slightly by age, and there was not a strong association between connection and social media.

  • Time spent in class did not have a significant effect on connection with loved ones, but varied by age.

  • Aspects of regular life that COVID-19 changed or took away were missed by different ages in different ways, and also varied by region.

Takeaways

In both the United States and India, research data and analysis concludes that the COVID-19 pandemic has indeed impacted students’ mental health and education. Both regions suggest that there are measures we need to begin taking as well as several aspects in our public education that calls for improvisation. It is a global responsibility for authorities, educators, and parents to unleash the potential of our youth by providing them a safe environment and a promising education system.

There are a few suggestions for educators and institutions that we agreed with and believe should be applied globally once the pandemic ends. First off, educators all over the world should acknowledge the major role that they have within every single students’ mental and physical well-being. Especially at a time like this, there are many steps that teachers can take to help lessen stress and anxiety for their students such as individually checking in with students to chat about aspects of their life outside of academics. Additionally, authorities should start to invest more in online education through further research to improve it for the future. This way, if another global pandemic were to occur in the near future, we can prevent such issues from reoccurring and thus provide our students with an improved online education system. Teachers will need proper training for skills in remote teaching. Last but definitely not least, the researches suggested that we can better provide mental and emotional support for students by improving healthcare management.

LS0tCnRpdGxlOiAiQ09WSUQtMTkgYW5kIHRoZSBJbXBhY3Qgb24gTWVudGFsIEhlYWx0aCBvZiBTdHVkZW50cyIKYXV0aG9yOiAiRWxpemFiZXRoIENhaW4sIE1heWEgSGFqbnkgRmVybmFuZGV6LCBTdGVwaGFuaWUgS29uYWR1LUFjaGVhbXBvbmcsIEdhb2NoYSBMZWUgIgpkYXRlOiAiMy8xMy8yMDIxIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICBrZWVwX21kOiBUUlVFCiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIHRoZW1lOiBjb3NtbwotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkKYGBgCgpgYGB7ciBsaWJyYXJpZXN9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShSQ29sb3JCcmV3ZXIpICAKbGlicmFyeShwbG90bHkpICAgICAgICAKbGlicmFyeShnZ2FuaW1hdGUpICAgICAKbGlicmFyeShnZ3RleHQpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGd0KSAgICAgICAgICAgIAp0aGVtZV9zZXQodGhlbWVfbWluaW1hbCgpKQpgYGAKCmBgYHtyfQpkYXRhc2V0IDwtIHJlYWRfY3N2KCJEYXRhLmNzdiIpICU+JSAKICBtdXRhdGUoQWdlQ2F0ID0gY3V0KEFnZSwgYnJlYWtzID0gYygwLDEzLDE4LDIzLDMzLDQ1LDYwKSwgbGFiZWxzID0gYygiNy0xMyIsICIxNC0xOCIsICIxOS0yMyIsICIyNC0zMyIsICIzNC00NSIsICI0Ni01OSIpKSkgJT4lCiAgbXV0YXRlKGF2Z3NsZWVwID0gbWVhbihTbGVlcCkpICU+JSAKICBtdXRhdGUoU29jaWFsQ2F0ID0gY3V0X251bWJlcihTb2NpYWxNZWRpYSwgbiA9IDMpKQpgYGAKCiMjICoqSW50cm9kdWN0aW9uKioKCiMjIyAqKkNPVklELTE5IGluIHRoZSBVbml0ZWQgU3RhdGVzKioKCk91ciBncm91cCB3YXMgaW50ZXJlc3RlZCBpbiBleHBsb3JpbmcgdGhlIHJlcGVyY3Vzc2lvbnMgb2YgdGhlIENPVklELTE5IHBhbmRlbWljIG9uIHlvdW5nIHBlb3BsZSwgYW5kIGVzcGVjaWFsbHkgc3R1ZGVudHMuIEluIGluaXRpYWwgcmVzZWFyY2gsIHdlIGZvdW5kIHRoYXQgd2l0aGluIHRoZSBVbml0ZWQgU3RhdGVzLCB0aGUgcmlzZSBvZiByZW1vdGUgbGVhcm5pbmcgaGFzIGNhbGxlZCBmb3IgYWRkaXRpb25hbCBhdHRlbnRpb24gb24gc3R1ZGVudHPigJkgbWVudGFsIGhlYWx0aCBhcyB0aGV5IGV4cGVyaWVuY2UgYSBsYWNrIG9mIHNvY2lhbCBpbnRlcmFjdGlvbiwgbGVzcyBkaXJlY3Qgc3VwcG9ydCBmcm9tIHRlYWNoZXJzLCBhbmQgZGlmZmljdWx0eSBmb2N1c2luZyBhdCBob21lLiBBc2lkZSBmcm9tIGFjYWRlbWljcywgdGhlIG1lbnRhbCB3ZWxsLWJlaW5nIG9mIGFsbCB5b3V0aCBpbiBnZW5lcmFsIGhhcyBhbHNvIGJlZW4gbmVnYXRpdmVseSBhZmZlY3RlZCBhcyBjaGlsZHJlbiBhbmQgdGhlaXIgZmFtaWxpZXMgYXJlIGFza2VkIHRvIHNlbGYtcXVhcmFudGluZSBhbmQgaW4gc29tZSBjYXNlcywgbGVhdmUgdGhlaXIgam9icy4gSGVhbHRoIGV4cGVydHMgYXJlIG5vdyBjb25jZXJuZWQgYWJvdXQgdGhlIG1lbnRhbCBoZWFsdGggY29uZGl0aW9ucyBmb3Igb3VyIHlvdXRoIGluIHRoZSBsb25nIHJ1bi4gVGhleSBiZWxpZXZlIHRoYXQgZXhwZXJpZW5jaW5nIGFuZCBsaXZpbmcgaW4gdGhlc2UgdG91Z2ggc2l0dWF0aW9ucyBmb3IgYW4gZXh0ZW5kZWQgYW1vdW50IG9mIHRpbWUgY2FuIGNhdXNlIGNoaWxkcmVuIHRvIGhhdmUgYW54aWV0eSBhbmQgZGVwcmVzc2lvbiB3aGljaCBpcyB3aHkgd2UgbmVlZCB0byBzdGFydCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIG5lZ2F0aXZlIGltcGFjdHMgb2YgQ09WSUQtMTkgb24gbWVudGFsIGhlYWx0aC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGlzIGlzc3VlLCB5b3UgbWF5IHJlYWQgdGhlIGFydGljbGUgcHJvdmlkZWQgaW4gdGhpcyBbbGlua10oaHR0cHM6Ly93d3cud3JpdGluZ2NpdHkuY29tL2hvdy1yZW1vdGUtbGVhcm5pbmctYWZmZWN0cy1zdHVkZW50cy1tZW50YWwtaGVhbHRoLmh0bWwpLiAgCgojIyMgKipEYXRhIENvbGxlY3Rpb24qKgoKV2UgaW50ZW5kZWQgdG8gbG9vayBmb3IgZGF0YSB0aGF0IGludmVzdGlnYXRlZCB0aGUgZWZmZWN0cyBvZiBDT1ZJRC0xOSBpbiB0aGUgVW5pdGVkIFN0YXRlcywgYnV0IGhhZCBkaWZmaWN1bHR5IGZpbmRpbmcgYSBkYXRhIHNldCB0aGF0IGhhZCBhbiBhZGVxdWF0ZSBhbW91bnQgb3IgdHlwZSBvZiBkYXRhIGZvciBvdXIgcHJvamVjdC4gV2UgdGhlbiBicm9hZGVuZWQgdGhlIHNjb3BlIG9mIG91ciBzZWFyY2ggYW5kIHdlcmUgaW50ZXJlc3RlZCB0byBsb29rIG91dHNpZGUgb2YgdGhlIFVuaXRlZCBTdGF0ZXMuIEFzIEFtZXJpY2Fucywgd2UgaGF2ZSBzZWVuIGFuZCBleHBlcmllbmNlZCB0aGUgcGFuZGVtaWPigJlzIGltcGxpY2F0aW9ucyBvbiBtZW50YWwgaGVhbHRoIHdpdGhpbiB0aGUgVW5pdGVkIFN0YXRlcywgYnV0IGl0IGxlYXZlcyB1cyBxdWl0ZSBjdXJpb3VzIGFib3V0IHRoZSBwcmVzZW50IGNpcmN1bXN0YW5jZXMgZWxzZXdoZXJlLiBXaGlsZSBzZWFyY2hpbmcgZm9yIG5ldyByZXNlYXJjaCBhbmQgZGF0YSBzZXRzLCB3ZSBzdHVtYmxlZCB1cG9uIGEgcmVsYXRpdmVseSByZWNlbnQgcmVzZWFyY2ggZG9uZSBpbiBEZWxoaSwgdGhlIGNhcGl0YWwgdGVycml0b3J5IG9mIEluZGlhIGNhbGxlZCAiQ09WSUQtMTkgYW5kIGl0cyBpbXBhY3Qgb24gZWR1Y2F0aW9uLCBzb2NpYWwgbGlmZSBhbmQgbWVudGFsIGhlYWx0aCBvZiBzdHVkZW50czogQSBTdXJ2ZXkiLiAKCiMjIyAqKkltcGxpY2F0aW9ucyBpbiBJbmRpYSoqCgpEYXRhIHdhcyBjb2xsZWN0ZWQgZnJvbSBzdWJqZWN0cyBsaXZpbmcgaW4gdGhlIE5hdGlvbmFsIENhcGl0YWwgUmVnaW9uIChOQ1IpIHdoaWNoIGVuY29tcGFzc2VzIGJvdGggRGVsaGkgYW5kIGl0cyBzdXJyb3VuZGluZyBhcmVhLCBhcyB3ZWxsIGFzIG91dHNpZGUgb2YgdGhpcyByZWdpb24uIEluIHRoaXMgc3R1ZHksIHJlc2VhcmNoZXJzIGxvb2tlZCBhdCBkaWZmZXJlbnQgYWdlLWdyb3VwcyBvZiBhIHRvdGFsIG9mIDEsMTgyIHN1YmplY3RzLCBhZ2VzIHJhbmdpbmcgZnJvbSA3IHRvIDU5IHllYXJzIG9sZCwgYW5kIGhvdyBzZXZlcmFsIGFzcGVjdHMgb2YgdGhlaXIgbGl2ZXMgd2VyZSBhZmZlY3RlZCBhZnRlciB0aGUgbG9ja2Rvd24uIEFkZGl0aW9uYWxseSwgdGhleSByZWNvcmRlZCB0aGUgZGlmZmVyZW50IGNvcGluZyBtZWNoYW5pc21zIGFkb3B0ZWQgZHVlIHRvIHN1Y2ggc3VkZGVuIGNoYW5nZXMuIFRoZSB2YXJpb3VzIHZhcmlhYmxlcyBzdWNoIGFzIGxlYXJuaW5nIGhvdXJzIGZvciBvbmxpbmUgY2xhc3NlcyBhbmQgc2VsZi1zdHVkeSwgZHVyYXRpb24gb2Ygc2xlZXAsIHRpbWUgc3BlbnQgb24gZml0bmVzcyBhbmQgc2xlZXAgd2VyZSByZWNvcmRlZCBhbmQgYW5hbHl6ZWQgYXMgZmFjdG9ycyByZWxhdGVkIHRvIG1lbnRhbCBoZWFsdGguIEFsdGhvdWdoIHRoZSBlZmZlY3Qgb24gc3R1ZGVudHPigJkgZWR1Y2F0aW9uLCBzb2NpYWwgbGlmZSwgcGh5c2ljYWwgaGVhbHRoLCBhbmQgbWVudGFsIHdlbGwtYmVpbmcgd2FzIGV4cGVjdGVkLCB0aGlzIHJlc2VhcmNoIHN1Z2dlc3RzIHRoYXQgdGhlIHB1YmxpYyBzaG91bGQgdGFrZSBuZWNlc3NhcnkgbWVhc3VyZXMgdG8gcHJldmVudCBwc3ljaG9sb2dpY2FsIHByb2JsZW1zIGFuZCBpbXByb3ZlIHN0dWRlbnRz4oCZIGV4cGVyaWVuY2VzIGluIGFuZCBvdXRzaWRlIG9mIGFjYWRlbWljcywgZm9yIG91ciBjdXJyZW50IHJlc3VsdHMgYXJlIG5vdCBtZWV0aW5nIHRoZSBleHBlY3RhdGlvbnMgb2YgdGhlIGluaXRpYWwgZ292ZXJubWVudCBwb2xpY2llcy4gRm9yIHNwZWNpZmljIGRldGFpbHMgb24gdGhlIGRlbW9ncmFwaGljcywgb2JqZWN0aXZlcywgYW5kIG1ldGhvZHMgb2YgdGhpcyBzdHVkeSwgcGxlYXNlIHJlYWQgdGhlIHJlc2VhcmNoIHBhcGVyIGxpbmtlZCBbaGVyZV0oaHR0cHM6Ly93d3cucmVzZWFyY2hnYXRlLm5ldC9wdWJsaWNhdGlvbi8zNDc5MzU3NjlfQ09WSUQtMTlfYW5kX2l0c19pbXBhY3Rfb25fZWR1Y2F0aW9uX3NvY2lhbF9saWZlX2FuZF9tZW50YWxfaGVhbHRoX29mX3N0dWRlbnRzX0FfU3VydmV5KS4gCgpBbHRob3VnaCB0aGUgcmVzZWFyY2hlcnMgaW4gdGhpcyBzdHVkeSBkaWQgYSBwaGVub21lbmFsIGpvYiBhdCBjcmVhdGluZywgZGVzaWduaW5nLCBhbmQgaW50ZXJwcmV0aW5nIHRoZWlyIG93biBwbG90cywgd2UgZGVjaWRlZCB0byBhc2sgZGlmZmVyZW50IHF1ZXN0aW9ucyBhbmQgZXhwbG9yZSBvdXIgb3duIGludGVyZXN0cyBieSB1c2luZyB0aGUgc2FtZSBkYXRhIHNldCB3aGlsZSBzdGlsbCBhY2tub3dsZWRnaW5nIHRoZWlyIHJlbWFya2FibGUgZmluZGluZ3MuIE92ZXJhbGwsIHdlIHdvbmRlcmVkIGhvdyBoYXMgQ09WSUQtMTkgYWZmZWN0ZWQgbWVudGFsIGhlYWx0aCBhbW9uZyBzdHVkZW50cz8gSG93IGRvIGZhY3RvcnMgbGlrZSBzb2NpYWwgY29ubmVjdGlvbiwgc2xlZXAgYW5kIHNvY2lhbCBtZWRpYSB1c2UgYWZmZWN0IHN0dWRlbnQgbGlmZSBhbmQgY2xhc3MgYWN0aXZpdGllcz8gCgojIyAqKkRlbW9ncmFwaGljcyoqCgojIyMgKipBZ2UgQnJlYWtkb3duKioKQmVmb3JlIGV4cGxvcmluZyB0aGUgZGF0YSBzZXQsIGl0J3MgaW1wb3J0YW50IHRvIGZpcnN0IGFja25vd2xlZGdlIHRoYXQgdGhlcmUgaXMgaW5kZWVkIGEgZGVtb2dyYXBoaWMgaW1iYWxhbmNlLiBPZiB0aGUgMSwxODIgcmVzcG9uZGVudHMsIHRoZSByZXNlYXJjaCBwYXBlciBzdGF0ZXMgdGhhdCA4NC4zJSBvZiB0aG9zZSBzdWJqZWN0cyB3ZXJlIDcgdG8gMjIgeWVhcnMgb2YgYWdlIHdpdGggdGhlIG1lYW4gYWdlIGJlaW5nIDIwLjE2IHllYXJzIG9sZC4gVGhpcyBiYXIgcGxvdCB2aXN1YWxseSBkZW1vbnN0cmF0ZXMgdGhhdCBtb3N0IG9mIHRoZSBkYXRhIGNvbWVzIGZyb20gY29sbGVnZS1hZ2VkIHJlc3BvbmRlbnRzLiBBcywgdGhlIGFpbSBvZiB0aGlzIHN0dWR5IHdhcyB0byByZXNlYXJjaCBDT1ZJRC0xOSBpbXBsaWNhdGlvbnMgb24gdGhlIGVkdWNhdGlvbiwgc29jaWFsIGxpZmUsIGFuZCBtZW50YWwgaGVhbHRoIG9mIHN0dWRlbnRzLCBpdCBtYWtlcyBzZW5zZSB0aGF0IHRoZXJlIGFyZSBzbyBtYW55IHJlc3BvbmRlbnRzIGluIHRoaXMgYWdlIHJhbmdlLgoKYGBge3J9CmdncGxvdGx5KGRhdGFzZXQgJT4lIAogIGdncGxvdChhZXMoeCA9IEFnZSkpICsKICBnZW9tX2JhcihmaWxsID0gIiNlN2Q0ZTgiLCBjb2xvcj0iIzk5NzBhYiIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICIiLCBicmVha3MgPSBjKDUsIDEwLCAxNSwgMjAsIDI1LCAzMCwgMzUsIDQwLCA0NSwgNTAsIDU1LCA2MCkpICsKICBsYWJzKHRpdGxlID0gIk51bWJlciBvZiBTdXJ2ZXkgUmVzcG9uZGVudHMgYnkgQWdlIiwgeCA9ICJBZ2UiLCB5ID0gIiIpICsKICB0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IiwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF9ibGFuaygpKSkKYGBgCgpCZWNhdXNlIG9mIHRoZSBkZW1vZ3JhcGhpYyBpbWJhbGFuY2UsIHdlIHNwbGl0IHRoZSByZXNwb25kZW50cyBpbnRvIGFnZSBncm91cHMuIFRoZSBncm91cGluZ3Mgd2VyZSBiYXNlZCBwYXJ0bHkgb24gd2hhdCB3ZSBjb25zaWRlcmVkIHRvIGJlIGEgdHJhZGl0aW9uIGFnZSBmb3IgZWR1Y2F0aW9uIGxldmVscyBhbmQgcGFydGx5IGJhc2VkIG9uIGxpZmUgc3RhZ2VzLiBGb3IgcmVzcG9uZGVudHMgaW4gdGhlIDcgdG8gMjMgYWdlIHJhbmdlLCB3ZSBjYW4gZ3Vlc3Mgd2hhdCBsZXZlbCBvZiBzY2hvb2xpbmcgdGhleSBhcmUgaW4gYmFzZWQgc29sZWx5IG9uIGFnZS4gSG93ZXZlciwgZm9yIG9sZGVyIHJlc3BvbmRlbnRzLCB0aGlzIGlzIG5vdCBzbyBzaW1wbGUuIFRodXMsIHdlIGJyb2tlIHVwIHRoZSBvbGRlciByZXNwb25kZW50cyBpbnRvIHdoYXQgd2UgdGhvdWdodCBvZiBhcyBkaWZmZXJlbnQgbGlmZSBzdGFnZXMuIFRoZXNlIHRvcGljcyBhcmUgYmlnIGlkZWFzIHRvIGV4cGxvcmUsIGFuZCB0byBnZXQgYSBtb3JlIGFjY3VyYXRlIHBpY3R1cmUgb2YgZWR1Y2F0aW9uIGFuZCBtZW50YWwgaGVhbHRoIHdlIHdhbnRlZCB0byBicmVhayB0aGUgYWdlIGRvd24gaW50byBncm91cHMgYnkgYWdlIGxldmVsLgoKYGBge3J9CmRhdGFzZXQgJT4lIAogIGNvdW50KEFnZUNhdCkgJT4lIAogIG11dGF0ZShwcm9wID0gbi9zdW0obikpICU+JSAKICBndChyb3duYW1lX2NvbCA9ICJBZ2VDYXQiKSU+JSAKICB0YWJfaGVhZGVyKCJSZXNwb25kZW50cyBieSBBZ2UgR3JvdXAiKSAlPiUgCiAgdGFiX3N0dWJoZWFkKGxhYmVsPSJBZ2UiKSAlPiUKICBmbXRfcGVyY2VudChjb2x1bW5zID0gdmFycyhwcm9wKSwgZGVjaW1hbHMgPSAzKSAlPiUgCiAgY29sc19sYWJlbChuID0gIlJlc3BvbmRlbnRzIiwgcHJvcD0iUHJvcG9ydGlvbiIpICU+JSAKICBzdW1tYXJ5X3Jvd3MoY29sdW1ucyA9IHZhcnMoQWdlQ2F0LCBuKSwKICAgIGZucyA9IGxpc3QoCiAgICAgIHRvdGFsID0gfnN1bSguLCBuYS5ybSA9IFRSVUUpKSxkZWNpbWFscyA9IDApCmBgYAoKPGJyPgoKIyMjICoqUmVnaW9uKioKCkp1c3QgYXMgd2Ugb2JzZXJ2ZWQgd2l0aCB0aGUgcHJldmlvdXMgcGxvdCwgdGhlIG51bWJlciBvZiByZXNwb25kZW50cyBwZXIgcmVnaW9uIG9mIHJlc2lkZW5jZSBhbHNvIGRpZmZlcnMuIFRoaXMgcGxvdCBkaXNwbGF5cyB0aGF0IHRoZXJlIGlzIGluZGVlZCBxdWl0ZSBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiBEZWxoaS1OQ1IgcmVzcG9uZGVudHMgYW5kIHJlc3BvbmRlbnRzIGxpdmluZyBvdXRzaWRlIG9mIHRoZSBEZWxoaS1OQ1IuIEFsdGhvdWdoIHRoZSBvbmxpbmUtc3VydmV5IHdhcyBvcmlnaW5hbGx5IGFpbWVkIGF0IGluc3RpdHV0aW9ucyB3aXRoaW4gdGhlIERlbGhpLU5DUiByZWdpb24sIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIHJlc3BvbnNlcyBmcm9tIG91dHNpZGUgb2YgRGVsaGktTkNSIHdhcyByZWNlaXZlZCwgZm9yIGRpc3RhbmNlLWxlYXJuaW5nIHJlZ3VsYXRpb25zIGZvcmNlZCBtYW55IHN0dWRlbnRzIHRvIG1vdmUgb3V0IG9mIGhvbWVzIGFuZCBpbnN0aXR1dGlvbnMgdG8gcmVzaWRlIGVsc2V3aGVyZS4gT2YgdGhlIHRvdGFsIG51bWJlciBvZiByZXNwb25kZW50cywgMzguMyUgd2VyZSBsaXZpbmcgb3V0c2lkZSBvZiB0aGUgRGVsaGktTkNSLgoKPGJyPgoKYGBge3J9CmdncGxvdGx5KGRhdGFzZXQgJT4lIAogIGdncGxvdChhZXMoeCA9IFJlZ2lvbikpICsKICBnZW9tX2JhcihmaWxsID0gIiNlN2Q0ZTgiKSArCiAgbGFicyh0aXRsZSA9ICJOdW1iZXIgb2YgU3VydmV5IFJlc3BvbmRlbnRzIGJ5IFJlZ2lvbiIsIHggPSAiIiwgeSA9ICIiKSArCiAgdGhlbWUocGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGxvdC50aXRsZS5wb3NpdGlvbj0gInBsb3QiLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpKQogICAgCmBgYAoKCgojIyMgKipDbGFzcyBUaW1lKioKClRoaXMgcGxvdCBjb21wYXJlcyB0aGUgbWVkaWFuIG51bWJlciBvZiBob3VycyBzcGVudCBpbiBjbGFzcyBieSBkaWZmZXJlbnQgYWdlIGdyb3Vwcy4gRm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBzdHVkeSwgaXQgaXMgaW1wb3J0YW50IHRvIGRyYXcgYXR0ZW50aW9uIHRvIGhvdyBtYW55IGhvdXJzIHN0dWRlbnRzIGFyZSBzcGVuZGluZyBzaXR0aW5nIGluIGZyb250IG9mIGEgc2NyZWVuIGVhY2ggZGF5LiBGcm9tIHRoaXMgcGxvdCwgd2UgY2FuIG9ic2VydmUgdGhhdCByZXNwb25kZW50cyB3aXRoaW4gdGhlIDctMTMgYW5kIDE0LTE4IGFnZS1ncm91cHMgc3BlbmQgdGhlIG1vc3QgdGltZSBpbiBjbGFzcyBwZXIgZGF5LiBUaGUgcmVzZWFyY2hlcnMgZW1waGFzaXplZCB0aGF0IGRpZmZlcmVudCB2YXJpYWJsZXMgKHRpbWUgc3BlbnQgb24gb25saW5lIGNsYXNzLCBzZWxmLXN0dWR5LGZpdG5lc3MsIHNsZWVwLCBhbmQgc29jaWFsIG1lZGlhKSBjaGFuZ2VzIHdpdGggZGlmZmVyZW50IGFnZSBkaXN0cmlidXRpb25zLiBBdmVyYWdlIHRpbWUgc3BlbnQgaW4gY2xhc3MgYW5kIGFnZS1ncm91cCB3YXMgb25lIG9mIHRoZSByZWxhdGlvbnNoaXBzIHRoYXQgd2VyZSBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsOyBBcyBhZ2UtZ3JvdXAgdmFsdWUgaW5jcmVhc2VzLCB0aGUgYXZlcmFnZSBudW1iZXIgb2YgaG91cnMgc3BlbnQgb25saW5lIHN0YXJ0cyB0byBkZWNyZWFzZS4gIAoKPHA+Jm5ic3A7PC9wPgoKYGBge3J9CmRhdGFzZXQgJT4lCiAgZ3JvdXBfYnkoQWdlQ2F0LCBDb25uZWN0aW9uLCBSZWdpb24pICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBBZ2VDYXQsCiAgICAgICAgICAgICB5ID0gT25saW5lQ2xhc3MpKSArCiAgZ2VvbV9ib3hwbG90KGZpbGwgPSAiI2MyYTVjZiIsIGNvbG9yID0gIiM3NjJhODMiLCBhbHBoYSA9IC41KSArCiAgbGFicyh4ID0gIkFnZSIsIAogICAgICAgeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkNvbXBhcmluZyBIb3VycyBTcGVudCBpbiBDbGFzcyBQZXIgRGF5IGJ5IEFnZSIsIGNvbCA9ICJncmV5IikgKwogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IiwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF9ibGFuaygpKQoKYGBgCgoKIyMgKipTb2NpYWwgTWVkaWEgVXNlLCBTbGVlcCBhbmQgTWVudGFsIEhlYWx0aCBPdXRjb21lcyAqKgoKSW4gYSByZWNlbnQgc3R1ZHkgZXhhbWluaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzbGVlcCBhbmQgbWVudGFsIGhlYWx0aCBhbmQgc2xlZXAgaW4gY29sbGVnZSBzdHVkZW50cywgcmVzZWFyY2hlcnMgZm91bmQgdGhhdCBkaWZmZXJlbnQgbWVudGFsIGhlYWx0aCBzeW1wdG9tcyBoYWQgZGlmZmVyZW50IHBhdHRlcm5zIG9mIGFzc29jaWF0aW9uIHdpdGggcG9vciBzbGVlcC4gVGhleSBmb3VuZCBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGFueGlldHkgYW5kIGRlcHJlc3Npb24gc3ltcHRvbXMgYW5kIHNsZWVwLCBidXQgZm91bmQgdGhhdCBtZW50YWwgaGVhbHRoIGNvbmRpdGlvbnMgb25seSBhZmZlY3RlZCBjZXJ0YWluIGVmZmVjdHMgb2YgcG9vciBzbGVlcC4gVGhpcyBzdHVkeSBhbHNvIGVtcGhhc2l6ZXMgdGhhdCB0aGUgZWZmZWN0cyBvZiBwb29yIG1lbnRhbCBoZWFsdGggY291bGQgYmUgZXhhY2VyYmF0ZWQgYnkgaW5hZGVxdWF0ZSBzbGVlcGluZyBob3VycyBvciBwb29yIHNsZWVwLiBQcmV2aW91cyByZXNlYXJjaCBoYXMgc2hvd24gdGhhdCBpbXByb3Zpbmcgc2xlZXAgZm9yIHN0dWRlbnRzIG1heSBhbHNvIGltcHJvdmUgbW9vZC4gKEJlY2tlciBldCBhbC4sIDIwMTgpLiAgCgpBIGNvcnJlbGF0aW9uYWwgc3R1ZHkgZnJvbSAyMDE4IGV4YW1pbmVkIHRoZSBhc3NvY2lhdGlvbiBvZiBvdXRjb21lcyBvZiBzb2NpYWwgbWVkaWEgdXNlIGluIHlvdW5nIGFkdWx0cyBzdWNoIGFzIGdlbmVyYWwgbWVudGFsIGhlYWx0aCBzeW1wdG9tcywgbG9uZWxpbmVzcywgc3VpY2lkYWwgdGhvdWdodHMsIGFuZCBhIGNoYW5nZSBpbiBlbXBhdGh5LCBhbmQgZm91bmQgdGhhdCBjb25jZXJucyByZWdhcmRpbmcgc29jaWFsIG1lZGlhIHVzZSBpbiB5b3VuZyBhZHVsdHMgbWF5IGJlIG1pc3BsYWNlZC4gVGhvdWdoIG9yZ2FuaXphdGlvbnMgc3VjaCBhcyB0aGUgUm95YWwgU29jaWV0eSBmb3IgcHVibGljIGhlYWx0aCBoYXZlIHJlcG9ydGVkIGV2aWRlbmNlIGZvciBsaW5rcyBiZXR3ZWVuIHNvY2lhbCBtZWRpYSB1c2UgYW5kIHBvb3IgbWVudGFsIGhlYWx0aCwgdGhpcyBwYXJ0aWN1bGFyIHN0dWR5IGRpZCBub3QgZmluZCBwcm9vZiBvZiBhbiBhc3NvY2lhdGlvbi4gVGhpcyBzdHVkeSBwb2ludGVkIG91dCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZSBvZiBzb2NpYWwgbWVkaWEgb24gbWVudGFsIGhlYWx0aCBlZmZlY3RzLiBJZiBzb2NpYWwgbWVkaWEgd2FzIHVzZWQgZm9yIG5lZ2F0aXZlIHNvY2lhbCBjb21wYXJpc29uIHRoaXMgY291bGQgbGVhZCB0byBkZXByZXNzaW9uLCBidXQgdGhhdCBhdXRoZW50aWMgc2VsZi1wcmVzZW50YXRpb24gY291bGQgYmUgYXNzb2NpYXRlZCB3aXRoIHBvc2l0aXZlIG1lbnRhbCBoZWFsdGggZWZmZWN0cy4gVGhlIDIwMTggc3R1ZHkgYWxzbyBzdGF0ZWQgdGhhdCB0aW1lIHNwZW50IHdpdGggc29jaWFsIG1lZGlhIG9yIGV4cG9zdXJlIGFsb25lIGlzIG5vdCBhIGdvb2QgaW5kaWNhdG9yIG9mIG1lbnRhbCBoZWFsdGgsIGJ1dCBpbnN0ZWFkIHRoYXQgaG93IHRoZSB0aW1lIHdhcyBzcGVudCBpcyBiZXR0ZXIgZm9yIGFuYWx5c2lzIGFuZCBpZGVudGlmeWluZyBwcm9ibGVtcyAoQmVycnltYW4sIEZlcmd1c29uLCBhbmQgTmVneSwgMjAxOCkuICAKCkluIHRoZSBncmFwaCBiZWxvdyB3ZSBzZWVrIHRvIGV4YW1pbmUgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIGJldHdlZW4gdGltZSBzcGVudCBvbiBzb2NpYWwgbWVkaWEgcGVyIHdlZWsgYW5kIHRpbWUgc3BlbnQgc2xlZXBpbmcgcGVyIHdlZWsgYXMgaW5kaWNhdG9ycyBmb3IgbWVudGFsIGhlYWx0aC4gRHVlIHRvIHRoZSBmYWN0IHRoYXQgc2xlZXAgZGlzdHVyYmFuY2UgY2FuIG9mdGVuIGJlIGFuIGluZGljYXRvciBvciBhc3NvY2lhdGlvbiB3aXRoIHBvb3IgbWVudGFsIGhlYWx0aCBvdXRjb21lcywgd2UgY2hvc2UgdG8gZXhhbWluZSBob3cgdGhlc2UgdHdvIHZhcmlhYmxlcyBpbnRlcmFjdGVkLCBhbmQgdG8gc2VlIGlmIHRoaXMgZGlmZmVyZWQgYnkgYWdlLiAgCgpgYGB7ciwgZXZhbD1GQUxTRX0Kc2xlZXBtZWRpYV9hbmltIDwtIGRhdGFzZXQgJT4lIAogIGdyb3VwX2J5KFNvY2lhbE1lZGlhLCBhdmdzbGVlcCwgQWdlQ2F0LCBTbGVlcCkgJT4lCiAgc3VtbWFyaXNlKGF2Z21lZGlhID0gbWVhbihTb2NpYWxNZWRpYSkpICU+JQogIGdncGxvdChhZXMoeCA9IFNsZWVwLCAKICAgICAgICAgICAgIHkgPSBTb2NpYWxNZWRpYSwgCiAgICAgICAgICAgICBjb2xvciA9IEFnZUNhdCwgCiAgICAgICAgICAgICBncm91cCA9IEFnZUNhdCkpICsKICBnZW9tX2ppdHRlcigpICsKICBsYWJzKHkgPSAiIiwgCiAgICAgICB4ID0gIkhvdXJzIG9mIFNsZWVwIiwgCiAgICAgICB0aXRsZSA9ICJBbW91bnQgb2YgU2xlZXAgYW5kIENvcnJlc3BvbmRpbmcgU29jaWFsIE1lZGlhIFVzZSBpbiBIb3VycyBieSBBZ2UgQ2F0ZWdvcnkiLCAKICAgICAgIHN1YnRpdGxlID0gIkFnZXM6IHtjbG9zZXN0X3N0YXRlfSIpICsKICB0cmFuc2l0aW9uX3N0YXRlcyhBZ2VDYXQpKwogIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGxvdC50aXRsZS5wb3NpdGlvbj0gInBsb3QiLCAKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplPTEwKSkrCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiUFJHbiIpICsKICBleGl0X2ZhZGUoKSArCiAgZW50ZXJfcmVjb2xvcihjb2xvciA9ICJhbGljZWJsdWUiKSArCiAgZXhpdF9yZWNvbG9yKGNvbG9yID0gImFsaWNlYmx1ZSIpCgphbmltYXRlKHNsZWVwbWVkaWFfYW5pbSwgZHVyYXRpb24gPSAyMCkKCmFuaW1fc2F2ZSgic2xlZXBtZWRpYV9hbmltLmdpZiIpCmBgYAoKPHA+Jm5ic3A7PC9wPgoKYGBge3J9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJzbGVlcG1lZGlhX2FuaW0uZ2lmIikKYGBgCgo8cD4mbmJzcDs8L3A+CgpGb3IgbW9zdCBvZiB0aGUgYWdlIGNhdGVnb3JpZXMgdGhlcmUgbWF5IGJlIGEgc2xpZ2h0IG5lZ2F0aXZlIGFzc29jaWF0aW9uIGJldHdlZW4gaG91cnMgb2Ygc2xlZXAgYW5kIGhvdXJzIG9mIHNvY2lhbCBtZWRpYSB1c2UuIEl0IGFwcGVhcnMgdGhhdCB3aGlsZSBob3VycyBvZiBzbGVlcCBnbyB1cCwgaG91cnMgb2Ygc29jaWFsIG1lZGlhIHVzZSBtYXkgc2xpZ2h0bHkgZ28gZG93bi4gRm9yIHRoZSBhZ2UgY2F0ZWdvcnkgMTkgeWVhcnMgLSAyMyB5ZWFycywgdGhlcmUgYXBwZWFycyB0byBiZSBubyBhc3NvY2lhdGlvbiBhdCBhbGwgYmV0d2VlbiBhbW91bnQgb2Ygc2xlZXAgYW5kIGFtb3VudCBvZiBzb2NpYWwgbWVkaWEgdXNlLiBJbiBhZGRpdGlvbiwgdGhlIGFzc29jaWF0aW9uIGlzIG5vdCBjbGVhciBmb3IgYW55IGFnZSBncm91cCwgbGVhZGluZyB1cyB0byBiZWxpZXZlIHRoYXQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgQ09WSUQtMTkgZGF0YXNldCB0aGF0IHdlIGFyZSB1c2luZyBtb3N0IGxpa2VseSBmb2xsb3cgdGhlIHRybmQgdGhhdCB0aGUgMjAxOCBzdHVkeSBieSBCZXJyeW1hbiwgRmVyZ3Vzb24sIGFuZCBOZWd5IHN1Z2dlc3RlZCwgd2hpY2ggaXMgdGhhdCB0aGVyZSBpcyBsaW1pdGVkIHByb29mIGJldHdlZW4gc29jaWFsIG1lZGlhIGFuZCBtZW50YWwgaGVhbHRoIGVmZmVjdHMuIEl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgZGlmZmVyZW5jZSBpbiBhbW91bnQgb2YgdGltZSBzbGVlcGluZyBpcyBub3QgdGhlIGJlc3QgaW5kaWNhdG9yIG9mIG1lbnRhbCBoZWFsdGggb3V0Y29tZXMsIGFuZCBhbm90aGVyIG1lYXN1cmVtZW50IGxpa2UgYW4gaW5jcmVhc2UgYW54aWV0eSBvciBkZXByZXNzaW9uIHN5bXB0b21zIG1heSBiZSBhIGJldHRlciBpbmRpY2F0b3IgdGhhdCB3YXMgbm90IGluY2x1ZGVkIGluIHRoZSBkYXRhIHNldCB0aGF0IHdlIHVzZWQuCgo8cD4mbmJzcDs8L3A+CgpgYGB7cn0KZGF0YXNldCAlPiUgCiAgc2VsZWN0KEFnZUNhdCwgU29jaWFsTWVkaWEsIENvbm5lY3Rpb24pICU+JSAKICBncm91cF9ieShBZ2VDYXQsIENvbm5lY3Rpb24pICU+JSAKICBzdW1tYXJpemUoYXZnX3RpbWVfc20gPSBtZWFuKFNvY2lhbE1lZGlhKSkgJT4lIAogIGdncGxvdChhZXMoeCA9IEFnZUNhdCwgeSA9IGF2Z190aW1lX3NtLAogICAgICAgICAgICAgZmlsbCA9IENvbm5lY3Rpb24pKSArCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzk5NzBhYiIsIiM1YWFlNjEiKSkgKwogIGxhYnModGl0bGUgPSAiQXZlcmFnZSBIb3VycyBTcGVudCBPbiBTb2NpYWwgTWVkaWEgYW5kIENvbm5lY3Rpb24gV2l0aCBMb3ZlZCBPbmVzIFBlciBBZ2UgR3JvdXAiLAogICAgICAgeCA9ICIiLAogICAgICAgeSA9ICIiKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLAogICAgICAgIGF4aXMubGluZSA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGxvdC50aXRsZS5wb3NpdGlvbj0gInBsb3QiLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKQogCmBgYAoKV2l0aCB0aGUgcGFuZGVtaWMsIHN0dWRlbnRzIGFyZSBmb3JjZWQgdG8gcXVhcmFudGluZSBhdCBob21lIHdoaWNoIHJlc3VsdHMgaW4gbGVzcyBmYWNlLXRvLWZhY2UgaW50ZXJhY3Rpb25zIGFuZCBtb3JlIHRpbWUgb24gc29jaWFsIG1lZGlhIChpZiBpdCdzIGFjY2Vzc2libGUgdG8gdGhlbSkuIEluIHRoZSBncmFwaCBiZWxvdywgd2UgdXNlZCB0aGUgZGF0YSBzZXQgdG8gc2VlIGlmIHRoZXJlIGlzIGEgc3Ryb25nIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBhdmVyYWdlIHRpbWUgc3BlbnQgb24gc29jaWFsIG1lZGlhIHBlciBkYXkgYW5kIHdoZXRoZXIgb3Igbm90IHRoZXkgZmVlbCBjb25uZWN0ZWQgdG8gdGhlaXIgbG92ZWQgb25lcy4gSW50ZXJlc3RpbmdseSwgdGhlIHBsb3Qgc2hvd3MgdGhhdCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgYWdlIGdyb3VwcywgdGhlIHJlc3VsdHMgdmFyeSwgYW5kIHRoZSBhdmVyYWdlIHRpbWUgc3BlbnQgb24gc29jaWFsIG1lZGlhIGRvZXMgbm90IGV4YWN0bHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGEgY29ubmVjdGlvbiB3aXRoIGxvdmVkIG9uZXMuIFRoaXMgY2FuIGRlbW9uc3RyYXRlIHRoYXQgdGhlIGNvbm5lY3Rpb25zIG1hZGUgd2l0aCBsb3ZlZCBvbmVzIGRvIG5vdCBtZXJlbHkgY29tZSBmcm9tIHNvY2lhbCBtZWRpYSBpbnRlcmFjdGlvbnMsIG5vciBhcmUgdGhleSBhIHJlc3VsdCBvZiBoYXZpbmcgdG8gc3RheSBob21lIHdpdGggbG92ZWQgb25lcyBldmVyeWRheS4gSW5kZWVkLCB0aGF0IGNvbm5lY3Rpb24gY2FuIGJlIGEgcmVzdWx0IG9mIGFueXRoaW5nIGRlcGVuZGluZyBvbiB0aGUgaW5kaXZpZHVhbC4KCgojIyAqKk91dGNvbWVzIGFuZCBFZmZlY3RzIG9mIENPVklELTE5KioKCjxwPiZuYnNwOzwvcD4KCmBgYHtyfQpkYXRhc2V0ICU+JQogIGRyb3BfbmEoKSAlPiUgCiAgbXV0YXRlKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgID0gZmN0X2x1bXBfbihgV2hhdCB5b3UgbWlzcyB0aGUgbW9zdGAsIDUpKSAlPiUKICBjb3VudChgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCwgc29ydD1UUlVFKSAlPiUgCiAgZ3Qocm93bmFtZV9jb2wgPSAiYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAiKSU+JSAKICB0YWJfaGVhZGVyKCJXaGF0IFJlc3BvbmRlbnRzIE1pc3MgTW9zdCIpICU+JSAKICBjb2xzX2xhYmVsKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgPSIiLAogICAgICAgICAgICAgbiA9ICIiKQpgYGAKCjxwPiZuYnNwOzwvcD4KCldlIHdlcmUgaW50ZXJlc3RlZCB0byBleGFtaW5lIHdoYXQgdGhlIHN1cnZleSByZXNwb25kZW50cyBtaXNzZWQgdGhlIG1vc3QgZHVyaW5nIHRoZSBDT1ZJRC0xOSBwYW5kZW1pYywgYW5kIGZvdW5kIHRoYXQgdGhyb3VnaG91dCB0aGUgbWFueSBzdXJ2ZXkgcmVzcG9uc2VzLCBlYXRpbmcgb3V0c2lkZSwgZnJpZW5kcyBhbmQgcmVsYXRpdmVzLCByb2FtaW5nIGFyb3VuZCBmcmVlbHksIHNjaG9vbC9jb2xsZWdlLCAgYW5kIHRyYXZlbGluZyB3ZXJlIHRoZSBtb3N0IGNvbW1vbiByZXNwb25zZXMgdG8gdGhlIHF1ZXN0aW9uICJXaGF0IGRvIHlvdSBtaXNzIHRoZSBtb3N0PyIuIFdlIG9ic2VydmVkIHRoYXQgbW9zdCB0aGUgbW9zdCBjb21tb24gcmVzcG9uc2VzIHdlcmUgYWxzbyB3aGF0IHdlLCBhcyBjb2xsZWdlIHN0dWRlbnRzLCAgbWlzc2VkIGluIHRoZSBVbml0ZWQgU3RhdGVzLiBJdCB3YXMgaW50ZXJlc3RpbmcgdGhhdCBzY2hvb2wgYW5kL29yIGNvbGxlZ2Ugd2FzIHRoZSBtb3N0IGNvbW1vbiBhbnN3ZXIsIGJ1dCB0aGlzIGFuc3dlciBtYWtlcyBzZW5zZSB3aGVuIGNvbnNpZGVyaW5nIHRoZSBkZW1vZ3JhcGhpY3Mgb2YgdGhlIHJlc3BvbnNlcyBhbmQgdGhlIG1vc3QgY29tbW9uIGFnZXMgZm9yIHJlc3BvbnNlLCB3aGljaCB3YXMgc2Nob29sIGFuZCBjb2xsZWdlIGFnZWQgcGVvcGxlLiAKCjxwPiZuYnNwOzwvcD4KCmBgYHtyfQpkYXRhc2V0ICU+JSAKICBkcm9wX25hKCkgJT4lIAogIG11dGF0ZShgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCA9IGZjdF9sdW1wX24oYFdoYXQgeW91IG1pc3MgdGhlIG1vc3RgLCA1KSkgJT4lIAogIGdncGxvdCgpKwogIGdlb21fYmFyKHBvc2l0aW9uPSJkb2RnZSIsIGFlcyh4PUFnZUNhdCwgZmlsbD1SZWdpb24pKSsKICBmYWNldF93cmFwKHZhcnMoYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGApKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzk5NzBhYiIsIiM1YWFlNjEiKSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJXaGF0IFJlc3BvbmRlbnRzIE1pc3MgTW9zdCBieSBBZ2UgR3JvdXAKICAgIDxzcGFuIHN0eWxlPSdjb2xvcjojOTk3MGFiOyc+aW4gRGVobGk8L3NwYW4+CiAgICA8c3Bhbj5hbmQgCiAgICA8c3BhbiBzdHlsZT0nY29sb3I6IzVhYWU2MTsnPk91dHNpZGUgRGVobGk8L3NwYW4+IiwKICAgIHggPSAiQWdlIEdyb3VwIiwgeSA9ICIiKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgYXhpcy5saW5lID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICBwbG90LnRpdGxlLnBvc2l0aW9uPSAicGxvdCIpCmBgYAoKPHA+Jm5ic3A7PC9wPgoKSXQgZG9lc24ndCBhcHBlYXIgdGhhdCByZWdpb24gaW1wYWN0ZWQgd2hhdCByZXNwb25kZW50cyBtaXNzZWQuIFdlIGRpZCBhbnRpY2lwYXRlIHRoaXMgYmVjYXVzZSwgYXMgbWVudGlvbmVkLCBtYW55IG9mIHRoZSB0aGluZ3MgcGVvcGxlIG1pc3NlZCBpbiB0aGlzIHN1cnZleSB3ZXJlIHRoaW5ncyB0aGF0IHdlIG1pc3NlZC4gSG93ZXZlciwgYmVjYXVzZSBvdXIgZGVtb2dyYXBoaWMgaXMgaW5iYWxhbmNlZCwgd2Ugd2VyZSBjdXJpb3VzIHRvIGxvb2sgbW9yZSBjbG9zZWx5IGF0IHRoZSBhZ2UgZ3JvdXBpbmdzIHdlIG1hZGUgYW5kIHNlZSBob3cgc3R1ZGVudHMgcmVzcG9uZGVkIHRvIHRoaXMgcXVlc3Rpb24gY29tcGFyZWQgdG8gb3RoZXIgaW4gdGhlaXIgc2FtZSBhZ2UgcmFuZ2UuCgo8cD4mbmJzcDs8L3A+CgpgYGB7cn0KI3dpdGhpbiBBZ2VDYXQ9Ny0xMywgd2hhdCBwZXJjZW50YWdlIHNhaWQgd2hhdDoKCmxpc3RsYWJlbHMgPC0gYygiRWF0aW5nIE91dHNpZGUiLCAiRnJpZW5kcy9SZWxhdGl2ZXMiLCAiUm9hbWluZyBGcmVlbHkiLCAiU2Nob29sL0NvbGxlZ2UiLCAiVHJhdmVsbGluZyIpCmxpc3RsYXN0bGFiZWxzIDwtIGMoIlNjaG9vbC9Db2xsZWdlIiwgIlRyYXZlbGxpbmciKQoKYWcxIDwtIGRhdGFzZXQgJT4lIAogIGRyb3BfbmEoKSAlPiUgCiAgbXV0YXRlKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgID0gZmN0X2x1bXBfbihgV2hhdCB5b3UgbWlzcyB0aGUgbW9zdGAsIDUpKSAlPiUgCiAgZmlsdGVyKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgICE9ICJPdGhlciIpICAlPiUKICBmaWx0ZXIoQWdlQ2F0PT0iNy0xMyIpICU+JQogIGdyb3VwX2J5KEFnZUNhdCxgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCkgJT4lIAogIGNvdW50KHNvcnQ9VFJVRSkgICU+JQogIG11dGF0ZShwcm9wPW4vODkqMTAwKSAlPiUgCiAgZ2dwbG90KCkrCiAgZ2VvbV9jb2wocG9zaXRpb249ImRvZGdlIiwgYWVzKHg9YFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAsIHk9cHJvcCksIGZpbGw9IiM3NjJhODMiKSArCiAgbGFicyh4ID0gIiIsIAogICAgICAgeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkFnZXMgNy0xMyIpICsKICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscz0gbGlzdGxhYmVscykgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IikKCiN3aXRoaW4gQWdlQ2F0PTE0LTE4LCB3aGF0IHBlcmNlbnRhZ2Ugc2FpZCB3aGF0OgphZzIgPC0gZGF0YXNldCAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBtdXRhdGUoYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAgPSBmY3RfbHVtcF9uKGBXaGF0IHlvdSBtaXNzIHRoZSBtb3N0YCwgNSkpICU+JQogIGZpbHRlcihgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCAhPSAiT3RoZXIiKSAgJT4lCiAgZmlsdGVyKEFnZUNhdD09IjE0LTE4IikgJT4lCiAgZ3JvdXBfYnkoQWdlQ2F0LGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgKSAlPiUgCiAgY291bnQoc29ydD1UUlVFKSAgJT4lCiAgbXV0YXRlKHByb3A9bi8yNjUqMTAwKSAlPiUgCiAgZ2dwbG90KCkrCiAgZ2VvbV9jb2wocG9zaXRpb249ImRvZGdlIiwgYWVzKHg9YFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAsIHk9cHJvcCksIGZpbGw9IiM5OTcwYWIiKSArCiAgbGFicyh4ID0gIiIsIAogICAgICAgeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkFnZXMgMTQtMTgiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIGF4aXMubGluZSA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGxvdC50aXRsZS5wb3NpdGlvbj0gInBsb3QiKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHM9IGxpc3RsYWJlbHMpCgojd2l0aGluIEFnZUNhdD0xOS0yMywgd2hhdCBwZXJjZW50YWdlIHNhaWQgd2hhdDoKYWczIDwtIGRhdGFzZXQgJT4lIAogIGRyb3BfbmEoKSAlPiUgCiAgbXV0YXRlKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgID0gZmN0X2x1bXBfbihgV2hhdCB5b3UgbWlzcyB0aGUgbW9zdGAsIDUpKSAlPiUKICBmaWx0ZXIoYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAgIT0gIk90aGVyIikgICU+JQogIGZpbHRlcihBZ2VDYXQ9PSIxOS0yMyIpICU+JQogIGdyb3VwX2J5KEFnZUNhdCxgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCkgJT4lIAogIGNvdW50KHNvcnQ9VFJVRSkgICU+JQogIG11dGF0ZShwcm9wPW4vNjQ1KjEwMCkgJT4lIAogIGdncGxvdCgpKwogIGdlb21fY29sKHBvc2l0aW9uPSJkb2RnZSIsIGFlcyh4PWBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgLCB5PXByb3ApLCBmaWxsPSIjYzJhNWNmIikgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwgCiAgICAgICB0aXRsZSA9ICJBZ2VzIDE5LTIzIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IikgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzPSBsaXN0bGFiZWxzKQoKI3dpdGhpbiBBZ2VDYXQ9MjQtMzMsIHdoYXQgcGVyY2VudGFnZSBzYWlkIHdoYXQ6CmFnNCA8LSBkYXRhc2V0ICU+JSAKICBkcm9wX25hKCkgJT4lIAogIG11dGF0ZShgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCA9IGZjdF9sdW1wX24oYFdoYXQgeW91IG1pc3MgdGhlIG1vc3RgLCA1KSkgJT4lCiAgZmlsdGVyKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgICE9ICJPdGhlciIpICAlPiUKICBmaWx0ZXIoQWdlQ2F0PT0iMjQtMzMiKSAlPiUKICBncm91cF9ieShBZ2VDYXQsYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGApICU+JSAKICBjb3VudChzb3J0PVRSVUUpICAlPiUKICBtdXRhdGUocHJvcD1uLzg0KjEwMCkgJT4lIAogIGdncGxvdCgpKwogIGdlb21fY29sKHBvc2l0aW9uPSJkb2RnZSIsIGFlcyh4PWBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgLCB5PXByb3ApLCBmaWxsPSIjYTZkYmEwIikgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwgCiAgICAgICB0aXRsZSA9ICJBZ2VzIDI0LTMzIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IikgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzPSBsaXN0bGFiZWxzKQoKI3dpdGhpbiBBZ2VDYXQ9MzQtNDUsIHdoYXQgcGVyY2VudGFnZSBzYWlkIHdoYXQ6CmFnNSA8LSBkYXRhc2V0ICU+JSAKICBkcm9wX25hKCkgJT4lIAogIG11dGF0ZShgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCA9IGZjdF9sdW1wX24oYFdoYXQgeW91IG1pc3MgdGhlIG1vc3RgLCA1KSkgJT4lCiAgZmlsdGVyKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgICE9ICJPdGhlciIpICAlPiUKICBmaWx0ZXIoQWdlQ2F0PT0iMzQtNDUiKSAlPiUKICBncm91cF9ieShBZ2VDYXQsYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGApICU+JSAKICBjb3VudChzb3J0PVRSVUUpICAlPiUKICBtdXRhdGUocHJvcD1uLzQyKjEwMCkgJT4lIAogIGdncGxvdCgpKwogIGdlb21fY29sKHBvc2l0aW9uPSJkb2RnZSIsIGFlcyh4PWBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgLCB5PXByb3ApLCBmaWxsPSIjNWFhZTYxIikgKwogIGxhYnMoeCA9ICIiLCAKICAgICAgIHkgPSAiIiwgCiAgICAgICB0aXRsZSA9ICJBZ2VzIDM0LTQ1IikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIHBsb3QudGl0bGUucG9zaXRpb249ICJwbG90IikgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzPSBsaXN0bGFiZWxzKQoKI3dpdGhpbiBBZ2VDYXQ9NDYtNjAsIHdoYXQgcGVyY2VudGFnZSBzYWlkIHdoYXQ6CmFnNiA8LSBkYXRhc2V0ICU+JSAKICBkcm9wX25hKCkgJT4lIAogIG11dGF0ZShgV2hhdCByZXNwb25kZW50cyBtaXNzIHRoZSBtb3N0YCA9IGZjdF9sdW1wX24oYFdoYXQgeW91IG1pc3MgdGhlIG1vc3RgLCA1KSkgJT4lCiAgZmlsdGVyKGBXaGF0IHJlc3BvbmRlbnRzIG1pc3MgdGhlIG1vc3RgICE9ICJPdGhlciIpICAlPiUKICBmaWx0ZXIoQWdlQ2F0PT0iNDYtNTkiKSAlPiUKICBncm91cF9ieShBZ2VDYXQsYFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGApICU+JSAKICBjb3VudChzb3J0PVRSVUUpICAlPiUKICBtdXRhdGUocHJvcD1uLzQqMTAwKSAlPiUgCiAgZ2dwbG90KCkrCiAgZ2VvbV9jb2wocG9zaXRpb249ImRvZGdlIiwgYWVzKHg9YFdoYXQgcmVzcG9uZGVudHMgbWlzcyB0aGUgbW9zdGAsIHk9cHJvcCksIGZpbGw9IiMxYjc4MzciKSArCiAgbGFicyh4ID0gIiIsIAogICAgICAgeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkFnZXMgNDYtNTkiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIGF4aXMubGluZSA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgcGxvdC50aXRsZS5wb3NpdGlvbj0gInBsb3QiKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHM9IGxpc3RsYXN0bGFiZWxzKQpgYGAKCgpgYGB7ciwgZmlnLndpZHRoPTEzLCBmaWcuaGVpZ2h0PTExfQooYWcxfGFnMikgLyAoYWczfGFnNCkgLyAoYWc1IHxhZzYpICsKICBwbG90X2Fubm90YXRpb24oIldoYXQgUmVzcG9uZGVudHMgTWlzcyB0aGUgTW9zdDogUHJvcG9ydGlvbmFsbHkgYnkgQWdlIEdyb3VwIikKYGBgCgojIyAqKkNvbmNsdXNpb24qKgoKCiMjIyAqKk1ham9yIEZpbmRpbmdzKiogCgoqIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzb2NpYWwgbWVkaWEgdXNlIGFuZCBzbGVlcCB2YXJpZXMgc2xpZ2h0bHkgYnkgYWdlLCBhbmQgdGhlcmUgd2FzIG5vdCBhIHN0cm9uZyBhc3NvY2lhdGlvbiBiZXR3ZWVuIGNvbm5lY3Rpb24gYW5kIHNvY2lhbCBtZWRpYS4gCgoqIFRpbWUgc3BlbnQgaW4gY2xhc3MgZGlkIG5vdCBoYXZlIGEgc2lnbmlmaWNhbnQgZWZmZWN0IG9uIGNvbm5lY3Rpb24gd2l0aCBsb3ZlZCBvbmVzLCBidXQgdmFyaWVkIGJ5IGFnZS4KCiogQXNwZWN0cyBvZiByZWd1bGFyIGxpZmUgdGhhdCBDT1ZJRC0xOSBjaGFuZ2VkIG9yIHRvb2sgYXdheSB3ZXJlIG1pc3NlZCBieSBkaWZmZXJlbnQgYWdlcyBpbiBkaWZmZXJlbnQgd2F5cywgYW5kIGFsc28gdmFyaWVkIGJ5IHJlZ2lvbi4gCgojIyMgKipUYWtlYXdheXMqKgpJbiBib3RoIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBJbmRpYSwgcmVzZWFyY2ggZGF0YSBhbmQgYW5hbHlzaXMgY29uY2x1ZGVzIHRoYXQgdGhlIENPVklELTE5IHBhbmRlbWljIGhhcyBpbmRlZWQgaW1wYWN0ZWQgc3R1ZGVudHPigJkgbWVudGFsIGhlYWx0aCBhbmQgZWR1Y2F0aW9uLiBCb3RoIHJlZ2lvbnMgc3VnZ2VzdCB0aGF0IHRoZXJlIGFyZSBtZWFzdXJlcyB3ZSBuZWVkIHRvIGJlZ2luIHRha2luZyBhcyB3ZWxsIGFzIHNldmVyYWwgYXNwZWN0cyBpbiBvdXIgcHVibGljIGVkdWNhdGlvbiB0aGF0IGNhbGxzIGZvciBpbXByb3Zpc2F0aW9uLiBJdCBpcyBhIGdsb2JhbCByZXNwb25zaWJpbGl0eSBmb3IgYXV0aG9yaXRpZXMsIGVkdWNhdG9ycywgYW5kIHBhcmVudHMgdG8gdW5sZWFzaCB0aGUgcG90ZW50aWFsIG9mIG91ciB5b3V0aCBieSBwcm92aWRpbmcgdGhlbSBhIHNhZmUgZW52aXJvbm1lbnQgYW5kIGEgcHJvbWlzaW5nIGVkdWNhdGlvbiBzeXN0ZW0uICAKClRoZXJlIGFyZSBhIGZldyBzdWdnZXN0aW9ucyBmb3IgZWR1Y2F0b3JzIGFuZCBpbnN0aXR1dGlvbnMgdGhhdCB3ZSBhZ3JlZWQgd2l0aCBhbmQgYmVsaWV2ZSBzaG91bGQgYmUgYXBwbGllZCBnbG9iYWxseSBvbmNlIHRoZSBwYW5kZW1pYyBlbmRzLiBGaXJzdCBvZmYsIGVkdWNhdG9ycyBhbGwgb3ZlciB0aGUgd29ybGQgc2hvdWxkIGFja25vd2xlZGdlIHRoZSBtYWpvciByb2xlIHRoYXQgdGhleSBoYXZlIHdpdGhpbiBldmVyeSBzaW5nbGUgc3R1ZGVudHPigJkgbWVudGFsIGFuZCBwaHlzaWNhbCB3ZWxsLWJlaW5nLiBFc3BlY2lhbGx5IGF0IGEgdGltZSBsaWtlIHRoaXMsIHRoZXJlIGFyZSBtYW55IHN0ZXBzIHRoYXQgdGVhY2hlcnMgY2FuIHRha2UgdG8gaGVscCBsZXNzZW4gc3RyZXNzIGFuZCBhbnhpZXR5IGZvciB0aGVpciBzdHVkZW50cyBzdWNoIGFzIGluZGl2aWR1YWxseSBjaGVja2luZyBpbiB3aXRoIHN0dWRlbnRzIHRvIGNoYXQgYWJvdXQgYXNwZWN0cyBvZiB0aGVpciBsaWZlIG91dHNpZGUgb2YgYWNhZGVtaWNzLiBBZGRpdGlvbmFsbHksIGF1dGhvcml0aWVzIHNob3VsZCBzdGFydCB0byBpbnZlc3QgbW9yZSBpbiBvbmxpbmUgZWR1Y2F0aW9uIHRocm91Z2ggZnVydGhlciByZXNlYXJjaCB0byBpbXByb3ZlIGl0IGZvciB0aGUgZnV0dXJlLiBUaGlzIHdheSwgaWYgYW5vdGhlciBnbG9iYWwgcGFuZGVtaWMgd2VyZSB0byBvY2N1ciBpbiB0aGUgbmVhciBmdXR1cmUsICB3ZSBjYW4gcHJldmVudCBzdWNoIGlzc3VlcyBmcm9tIHJlb2NjdXJyaW5nIGFuZCB0aHVzIHByb3ZpZGUgb3VyIHN0dWRlbnRzIHdpdGggYW4gaW1wcm92ZWQgb25saW5lIGVkdWNhdGlvbiBzeXN0ZW0uIFRlYWNoZXJzIHdpbGwgbmVlZCBwcm9wZXIgdHJhaW5pbmcgZm9yIHNraWxscyBpbiByZW1vdGUgdGVhY2hpbmcuIExhc3QgYnV0IGRlZmluaXRlbHkgbm90IGxlYXN0LCB0aGUgcmVzZWFyY2hlcyBzdWdnZXN0ZWQgdGhhdCB3ZSBjYW4gYmV0dGVyIHByb3ZpZGUgbWVudGFsIGFuZCBlbW90aW9uYWwgc3VwcG9ydCBmb3Igc3R1ZGVudHMgYnkgaW1wcm92aW5nIGhlYWx0aGNhcmUgbWFuYWdlbWVudC4K